/**
 * 密码加密和验证测试脚本
 */
require('dotenv').config({ path: './.env' });
const bcrypt = require('bcryptjs');
const { User } = require('../models');
const sequelize = require('../config/database');

async function testPassword() {
  try {
    console.log('开始测试密码加密和验证...');
    
    // 测试直接使用 bcrypt
    const plainPassword = 'admin123';
    const salt = await bcrypt.genSalt(10);
    const hashedPassword = await bcrypt.hash(plainPassword, salt);
    
    console.log('明文密码:', plainPassword);
    console.log('加密后:', hashedPassword);
    
    const isValid = await bcrypt.compare(plainPassword, hashedPassword);
    console.log('直接验证结果:', isValid);
    
    // 测试通过模型
    await sequelize.authenticate();
    console.log('数据库连接成功');
    
    // 创建临时用户
    const tempUser = await User.create({
      username: 'temp_test_user',
      password: plainPassword,
      name: '测试用户',
      role: 'user'
    });
    
    console.log('模型加密后的密码:', tempUser.password);
    
    // 验证模型方法
    const isValidByModel = await tempUser.validatePassword(plainPassword);
    console.log('模型验证结果:', isValidByModel);
    
    // 清理
    await tempUser.destroy();
    console.log('测试完成，已清理测试数据');
    
    process.exit(0);
  } catch (error) {
    console.error('测试失败:', error);
    process.exit(1);
  }
}

testPassword(); 